﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
/// <summary>
/// 使用多态的思想计算圆形 与矩形的面积及周长
/// 里氏转换原则
/// </summary>
namespace 抽象类
   
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入圆的半径!");
            double r = double.Parse(Console.ReadLine());
            Console.WriteLine(r);
        }
    }
    /// <summary>
    /// abstract 标记抽象类
    /// </summary>
    abstract class 形状
    {
        /// <summary>
        /// 抽象成员只能存在抽象类中，并且不能是私有。
        /// </summary>
        /// <returns></returns>
       public abstract double 获取面积();
       public abstract double 获取周长();
    }
    class 圆形 : 形状
    {
        //字段 r 半径
        private double _r;
        private double r;

        public double 半径取值()
        {
            return r;
        }

        public void 半径赋值(double value)
        {
            r = value;
        }

        //方法
        //构造函数



        public override double 获取面积()
        {
            return 半径取值() * 半径取值() * Math.PI;
        }

        public override double 获取周长()
        {
            return 2 * 半径取值() * Math.PI;
        }
    }

    class 矩形 : 形状
    {
        //字段
        private double _length;
        private double _width;
        //属性
        public double Length { get => _length; set => _length = value; }
        public double Width { get => _width; set => _width = value; }
        //构造函数
        public 矩形() { }
        //自定义构造函数
        public 矩形(double 长, double 宽)
        {
            Length = 长;
            Width = 宽;
        }

        public override double 获取周长()
        {
            return Length * Width;
        }

        public override double 获取面积()
        {
            return (Length + Width) * 2;
        }
    }

}
